package es.antonio.duarte.abrahamAdmin.struts.actions;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import es.antonio.duarte.abrahamAdmin.model.Cosas;
import es.antonio.duarte.abrahamAdmin.servicios.CosasServicio;
import es.antonio.duarte.abrahamAdmin.struts.Constantes;
import es.antonio.duarte.abrahamAdmin.struts.forms.InformacionCosasForm;

/**
 * Esta clase genera la lista de cosas de la página de información
 * general de la aplicación.
 */
public class InformacionGeneralCosasAction extends BaseAction {

   /** Manejador de trazas. */
   private final Log log = LogFactory.getLog(InformacionGeneralCosasAction.class);

   /**
    * El servicio de cosas para todas las operaciones relacionadas con
    * Cosas necesarias.
    */
   private CosasServicio servicio;

   /**
    * Ejecucion del action. Obtiene la informacion general a partir de los datos
    * del actionForm.
    * @param mapping ActionMapping asociado al action
    * @param form ActionForm asocido al action
    * @param request HttpServletRequest asociado al action
    * @param response HttpServletResponse asociado al action
    * @return ActionForward
    * @throws Exception En caso de error en la ejecucion del action
    * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping,
    *      org.apache.struts.action.ActionForm,
    *      javax.servlet.http.HttpServletRequest,
    *      javax.servlet.http.HttpServletResponse)
    */
   @Override
   public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
      logDebug(log, "Accediendo al formulario");
      InformacionCosasForm formulario = (InformacionCosasForm) form;
      logDebug(log, "Consultando cosas");
      Collection<Cosas> cosas= servicio.consultar();
      logDebug(log, "Obtenidas cosas: " + cosas);
      formulario.setCosas(cosas);
      logDebug(log, "Devolviendo forward informacionGeneralCosas");
      return mapping.findForward(Constantes.INFORMACION_GENERAL_COSAS);
   }

   /**
    * Obtiene el valor de servicio.
    * @return Valor de servicio
    */
   public CosasServicio getServicio() {
      return this.servicio;
   }

   /**
    * Asigna el valor de servicio.
    * @param servicio Valor a asignar
    */
   public void setServicio(final CosasServicio servicio) {
      this.servicio = servicio;
   }
}
